package daos;

import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.Query;

import datos.Modelo;
import dtos.ResumenAutomovilModeloDTO;

/**
 * @version 1.0
 * @author Andres Mejia -Fabio Giraldo
 * 
 *	Session Bean implementation class ModeloDAO
 * 
 * @param Modelo hace referencia a la entidad que va hacer manejada por el DAO.
 * @param String especifica cual es el tipo de dato de la llave primaria de la entidad. 
 * 
 */
@Stateless
@LocalBean
public class ModeloDAO extends DAO<Modelo, String> {

    /**
     * Default constructor. 
     */
    public ModeloDAO() {
        // TODO Auto-generated constructor stub
    }

	@Override
	protected Class<Modelo> getEntityClass() {
		// TODO Auto-generated method stub
		return Modelo.class;
	}
	
	//hacer una consulta con un dto para devolver un resumen de los automoviles de una marca dada
	public List<ResumenAutomovilModeloDTO> automovilesModelo(String modelo)
	{
		Query query=entityManager
		.createQuery("select new dtos.ResumenAutomovilModeloDTO(automovil.placa,automovil.color.color1,automovil.modelo.marca.nombre)from Modelo m INNER JOIN m.automoviles automovil where m.nombre=:parametro" );// where m.placa=:parametro
		query.setParameter("parametro", modelo);
		
		return query.getResultList();
	}
	
//	//hacer una consulta con un dto para devolver un resumen de los automoviles de una marca dada
//	public List<String> automovilesModelo(String modelo)
//	{
//		Query query=entityManager.createQuery("select automovil.placa from Modelo m INNER JOIN m.automoviles automovil where m.nombre=:parametro" );// where m.placa=:parametro
//		query.setParameter("parametro", modelo);
//		
//		return query.getResultList();
//	}

}
